The use of virtualization in data center servers is becoming widespread. Generally, virtualization in a data center server describes a software abstraction that separates a storage resource and its use from the underlying physical machine. Virtual machines (VM), which are a virtualization of a physical electronic device and its hardware components, play a central role in virtualization. A virtual machine typically includes a virtual processor, virtual system memory, virtual storage, and various virtual devices. To use the virtual devices, the operating system usually utilizes standard device drivers. Operating systems executing on the virtual machine operate as though executing on the actual hardware of the physical electronic device. A layer of software is required between a virtual machine and the underlying physical hardware. This interface multiplexes access to the hardware between resident virtual machines. The interface is commonly referred to as the hypervisor.
Presently, virtualization has had limited penetration into storage system applications. Virtual machines used in storage applications currently have a limited view of disk resources on external storage area networks. Further, all traffic between storage initiators and storage targets occur “over the wire,” that is, the communications pass from the storage initiator to an external storage target. Accordingly, all routing of requests from initiators to targets occurs externally (outside of the electronic devices of the initiator and of the target).
A consequence of the limited penetration of virtualization into current storage applications, which generally use a single storage stack on a single physical machine, is the inability of such storage applications to keep pace with technological advances. A single storage stack (embodied in a storage application) may have difficulty utilizing the increasing number of processor cores that are becoming available on storage systems. In addition, ports are becoming faster and more numerous. A single storage stack that operates with an increased hardware configuration becomes an increasing fault liability. Because of the heavier hardware load, the single storage stack becomes a more vulnerable single point of failure, complicating any prospects of offering quality-of-service (QOS) guarantees.